package com.turing.post.organization.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 凭证种类接口
 * 
 * @author wzd
 * @2013-03-12
 */
@Remote
@Local
public interface VoucherDao {

	/**
	 * 获取主键id（凭证ID）最大值
	 * 
	 * @return
	 */
	public BigInteger getMaxIdVoucherId();

	/**
	 * 根据凭证名称查询凭证种类列表---注：模糊查询
	 * 
	 * @param voucherName
	 *            凭证名称
	 * @param page
	 *            页码
	 * @return 凭证种类列表
	 */
	public List<Voucher> getVoucherListByVoucherName(PCPSWebInput webInput,
			String voucherName, Integer page);

	/**
	 * 查询销售商记录条数
	 * 
	 * @param branchNo
	 *            所属机构
	 * @return BigInteger 记录总数
	 */
	public BigInteger getVoucherListByVoucherNameTotal(PCPSWebInput webInput,
			String voucherName);

	/**
	 * 根据凭证id查询凭证种类对象
	 * 
	 * @param voucherId
	 *            凭证Id
	 * @return 凭证种类对象
	 */
	public Voucher getVoucherByVoucherId(BigInteger voucherId);

	/**
	 * 新增凭证种类
	 * 
	 * @param Voucher
	 *            凭证种类
	 * @throws PCPSApplicationException
	 */
	public void insertVoucher(Voucher voucher) throws PCPSApplicationException;

	/**
	 * 修改凭证种类
	 * 
	 * @param Voucher
	 *            凭证种类
	 * @throws PCPSApplicationException
	 */
	public void updateVoucher(Voucher voucher) throws PCPSApplicationException;

	/**
	 * 根据凭证名称查询凭证种类列表---注：模糊查询(用于下拉或弹出)
	 * 
	 * @param voucherName
	 *            凭证名称
	 * @return 凭证种类列表
	 */
	public List<Voucher> getVoucherDropListByVoucherName(PCPSWebInput webInput,
			String voucherName);

	/**
	 * 删除凭证种类
	 * 
	 * @param voucherName
	 *            凭证名称
	 * @throws PCPSApplicationException
	 */
	public void deleteVoucher(BigInteger voucherId)
			throws PCPSApplicationException;

	/**
	 * 根据凭证种类名称检索凭证对象
	 * 
	 * @param voucherName
	 *            凭证名称
	 * @throws PCPSApplicationException
	 */
	public List<Voucher> getVoucherByVoucherName(String issuecompanyno,
			String voucherName);

	/**
	 * 查询某发卡商的所有凭证种类
	 * 
	 * @param issueCompanyNo
	 * @return
	 */
	public List<Voucher> getAllVoucherByIssueCompanyNo(String issueCompanyNo);
}
